<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilplmi: xplmi_generic.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilplmi
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xplmi__generic_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xplmi_generic.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This is the file which contains general commands. </p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date        Changes
</p>
<hr/>
<p>
1.00  kc   08/23/2018 Initial release
1.01  bsv  04/18/2019 Added support for NPI and CFI readback
      bsv  05/01/2019 Added support to load CFI bitstreams larger
                than 64K
      ma   08/24/2019 Added SSIT commands
1.02  bsv  12/13/2019 Added support for NOP and SET commands
      kc   12/17/2019 Add deferred error mechanism for mask poll
      bsv  01/09/2020 Changes related to bitstream loading
      bsv  01/31/2020 Added API to read device ID from hardware
      ma   03/18/2020 Added event logging code
      bsv  03/09/2020 Added support for CDO features command
      bsv  04/04/2020 Code clean up
1.03  bsv  06/10/2020 Added SetBoard and GetBoard APIs
      kc   07/28/2020 Added SetWdt command support
      skd  07/29/2020 Cfi Write related changes for Qspi and Ospi
      bm   08/03/2020 Added ReadBack Override support
      bsv  09/30/2020 Added parallel DMA support for SBI, JTAG, SMAP and PCIE
                      boot modes
      bm   10/14/2020 Code clean up
      td   10/19/2020 MISRA C Fixes
      ana  10/19/2020 Added doxygen comments
1.04  td   11/23/2020 MISRA C Rule 17.8 Fixes
      bsv  01/04/2021 Added support for LogString and LogAddress commands
      bm   02/17/2021 Added const to XPlmi_GenericCmds variable
          bsv  02/28/2021 Added code to avoid unaligned NPI writes
1.05  ma   03/04/2021 Added XPlmi_CheckIpiAccess handler to check access for
                      secure IPI commands
      ma   03/10/2021 Removed Get Device Id and Get Board commands from
                      secure commands list
      ma   03/18/2021 Added support for Marker command
      bsv  04/13/2021 Added support for variable Keyhole sizes in
                      DmaWriteKeyHole command
1.06  ma   06/17/2021 Added readback support for SSIT Slave SLRs
      ma   06/28/2021 Added support for proc command
      bsv  07/05/2021 Added code to handle case where bitstream data starts
                      at 32K boundary
      bsv  07/16/2021 Fix doxygen warnings
      bsv  07/18/2021 Debug enhancements
      bsv  08/02/2021 Code clean up to reduce size
      bsv  08/15/2021 Removed unwanted goto statements
      rb   08/19/2021 Fix compilation warning
1.07  bsv  10/26/2021 Code clean up
      ma   11/22/2021 Remove hardcoding of Proc addresses
      kpt  12/13/2021 Replaced Xil_SecureMemCpy with Xil_SMemCpy
      is   01/10/2022 Added support for OT_CHECK command (XPlmi_OTCheck)
      is   01/10/2022 Updated Copyright Year to 2022
      bm   01/20/2022 Fix compilation warnings in Xil_SMemCpy
1.08  bsv  06/03/2022 Add CommandInfo to a separate section in elf
      bm   07/06/2022 Refactor versal and versal_net code
      ma   07/08/2022 Add support for storing procs to PMC RAM based on ID
      ma   07/08/2022 Add ScatterWrite and ScatterWrite2 commands to versal
      ma   07/08/2022 Add support for Tamper Trigger over IPI
      ma   07/20/2022 Print XPlmi_MaskPoll failures in all cases
      bm   07/20/2022 Retain critical data structures after In-Place PLM Update
      bm   07/24/2022 Set PlmLiveStatus during boot time
      bsv  08/23/2022 Clear BoardParams instance in case of failure
      bm   08/24/2022 Support Begin, Break and End commands across chunk
                      boundaries
      bm   08/30/2022 Ignore strings in begin command beyond 24 characters
                      instead of erroring out
      bm   09/14/2022 Move ScatterWrite commands from common to versal_net
1.09  ng   11/11/2022 Updated doxygen comments
      bm   01/03/2023 Create Secure Lockdown as a Critical Priority Task
      bm   01/03/2023 Clear End Stack before processing a CDO partition
      bm   01/03/2023 Notify Other SLRs about Secure Lockdown
      sk   01/11/2023 Update XPlmi_MoveProc to handle 64 bit Address
      bm   01/18/2023 Fix CFI readback logic with correct keyhole size
      ng   03/07/2023 Fixed circular dependency between xilpm and xilplmi
                      libraries
      bm   03/11/2023 Added Temporal redundancy to tamper response condition
      ng   03/16/2023 Added control to disable minimal timeout in maskpoll
      ng   03/30/2023 Updated algorithm and return values in doxygen comments
1.10  ng   05/19/2023 Added null termination for log string buffer
      bm   06/13/2023 Added unique error code support for mask poll.
                      Also added generic logic for 32-bit and 64-bit mask poll.
      bm   06/13/2023 Log PLM error before deferring
      bm   06/23/2023 Added access permissions for IPI commands
                      Added set_ipi_access cdo command
      bm   07/06/2023 Updated Begin offset Stack logic
      bm   07/06/2023 Refactored Proc logic to more generic logic
      bm   07/06/2023 Added list commands
      sk   08/30/2023 Added Address range check for PSM Buff List
      dd   09/12/2023 MISRA-C violation Rule 14.4 fixed
2.0   ng   11/11/2023 Implemented user modules
      mss  11/02/2023 Added VerifyAddr check for address mentioned in
                      GetBoard command
2.00  ng   12/27/2023 Reduced log level for less frequent prints
      sk   12/14/2023 Moved XPlmi_GetBufferList to platform files
      pre  01/10/2024 XPlmi_LogString, XPlmi_Begin logic enhancement
      pre  01/22/2024 Addition of new line after string printing
                      in XPlmi_LogString, XPlmi_Begin functions
      ng   01/28/2024 optimized u8 variables
      ng   01/26/2024 Updated minor error codes
      mss  03/13/2024 MISRA-C violatiom Rule 17.8 fixed
      mss  03/13/2024 MISRA-C violation Rule 2.2 fixed
      jb   04/09/2024 Reduced log level for proc print
      am   04/15/2024 Fixed doxygen warnings
2.01  kpt  06/19/2024 Trigger secure lockdown immediately when requested through CDO
      pre  07/11/2024 Implemented secure PLM to PLM communication
      pre  07/16/2024 Added command routing to slave SLRs
      pre  08/22/2024 Modified XPlmi_GetReadbackLen for external linkage
      pre  09/30/24 Added support for get secure communication status command
      pre  10/26/2024 Removed XPlmi_GetReadBackPropsValue, XPlmi_SetReadBackProps and
                      XPlmi_GetReadBackPropsInstance APIs
      bm   10/29/2024 Fix chunk boundary handling in KeyholeXfr logic
      pre  12/24/2024 Skip LPD initialized check for other than PSM_BUFFER_LIST type
      pre  01/13/2025 Added command to set access status of DDRMC main registers</pre><pre></pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga54692febdba7dfe3388442522c5e0896"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga54692febdba7dfe3388442522c5e0896">XPlmi_GenericMaskPoll</a> (XPlmi_Cmd *Cmd, u64 Addr, u32 Type)</td></tr>
<tr class="memdesc:ga54692febdba7dfe3388442522c5e0896"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function provides generic implementation for both 32-bit and 64-bit mask poll command execution.  <a href="group__xilplmi__server__apis.html#ga54692febdba7dfe3388442522c5e0896">More...</a><br/></td></tr>
<tr class="separator:ga54692febdba7dfe3388442522c5e0896"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga16dfbc95a9bdf0502840e261b8865652"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga16dfbc95a9bdf0502840e261b8865652">XPlmi_DmaTransfer</a> (u64 Dest, u64 Src, u32 Len, u32 Flags)</td></tr>
<tr class="memdesc:ga16dfbc95a9bdf0502840e261b8865652"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function provides functionality for DMA write.  <a href="group__xilplmi__server__apis.html#ga16dfbc95a9bdf0502840e261b8865652">More...</a><br/></td></tr>
<tr class="separator:ga16dfbc95a9bdf0502840e261b8865652"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:gad00730c0c969d048da8c64b5b3a48203"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gad00730c0c969d048da8c64b5b3a48203">XPlmi_GetReadbackLen</a> (u32 Len)</td></tr>
<tr class="memdesc:gad00730c0c969d048da8c64b5b3a48203"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function processes and provides readback length.  <a href="group__xilplmi__server__apis.html#gad00730c0c969d048da8c64b5b3a48203">More...</a><br/></td></tr>
<tr class="separator:gad00730c0c969d048da8c64b5b3a48203"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga180e0da7c5bf8b67eb38f54c3db12149"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga180e0da7c5bf8b67eb38f54c3db12149">XPlmi_MoveBuffer</a> (u32 BufferIndex, XPlmi_BufferList *BufferList)</td></tr>
<tr class="memdesc:ga180e0da7c5bf8b67eb38f54c3db12149"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function provides functionality to move procs when proc command is received for existing BufferId.  <a href="group__xilplmi__server__apis.html#ga180e0da7c5bf8b67eb38f54c3db12149">More...</a><br/></td></tr>
<tr class="separator:ga180e0da7c5bf8b67eb38f54c3db12149"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41032abddd7e456fbc149f2264f8bdef"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga41032abddd7e456fbc149f2264f8bdef">XPlmi_SetBufferList</a> (u32 Address, u16 Size)</td></tr>
<tr class="memdesc:ga41032abddd7e456fbc149f2264f8bdef"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function sets PSM BufferList address to given Address and Size.  <a href="group__xilplmi__server__apis.html#ga41032abddd7e456fbc149f2264f8bdef">More...</a><br/></td></tr>
<tr class="separator:ga41032abddd7e456fbc149f2264f8bdef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabff99cf415b44f557a2d16f59a382b69"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gabff99cf415b44f557a2d16f59a382b69">XPlmi_SearchBufferList</a> (XPlmi_BufferList *BufferList, u32 BufferId, u64 *BufAddr, u32 *BufLen)</td></tr>
<tr class="memdesc:gabff99cf415b44f557a2d16f59a382b69"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function searches Buffer list with the buffer Id to provide buffer address and buffer length.  <a href="group__xilplmi__server__apis.html#gabff99cf415b44f557a2d16f59a382b69">More...</a><br/></td></tr>
<tr class="separator:gabff99cf415b44f557a2d16f59a382b69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga053bc9806bfc10856b7617c75da2a864"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga053bc9806bfc10856b7617c75da2a864">XPlmi_ExecuteProc</a> (u32 ProcId)</td></tr>
<tr class="memdesc:ga053bc9806bfc10856b7617c75da2a864"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function provides functionality to execute given ProcId when request to execute a particular ProcId.  <a href="group__xilplmi__server__apis.html#ga053bc9806bfc10856b7617c75da2a864">More...</a><br/></td></tr>
<tr class="separator:ga053bc9806bfc10856b7617c75da2a864"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafba1a999a3e425ab640268869f765c53"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gafba1a999a3e425ab640268869f765c53">XPlmi_StoreBuffer</a> (XPlmi_Cmd *Cmd, u32 BufferId, XPlmi_BufferList *BufferList)</td></tr>
<tr class="memdesc:gafba1a999a3e425ab640268869f765c53"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function stores the buffer data into the buffer list provided.  <a href="group__xilplmi__server__apis.html#gafba1a999a3e425ab640268869f765c53">More...</a><br/></td></tr>
<tr class="separator:gafba1a999a3e425ab640268869f765c53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga995858beb8dd1dcab824b66f5d633f45"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga995858beb8dd1dcab824b66f5d633f45">XPlmi_SetDDRMCMainRegSts</a> (u32 DDRMCNum, u32 RegSts)</td></tr>
<tr class="memdesc:ga995858beb8dd1dcab824b66f5d633f45"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function sets the access status of DDR MC main registers.  <a href="group__xilplmi__server__apis.html#ga995858beb8dd1dcab824b66f5d633f45">More...</a><br/></td></tr>
<tr class="separator:ga995858beb8dd1dcab824b66f5d633f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
